package com.example.demo.shengcheng;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class AddressGenerator {
    static int prorand;
    private static final String[] provinces = {
            "北京市", "天津市","上海市","重庆市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省",
             "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省",
            "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省",  "四川省", "贵州省",
            "云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区"
    };

    private static final String[][] cities = {
            {"北京市"},
            {"天津市"},
            {"上海市"},
            {"重庆市"},
            {"石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市"},
            {"太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市"},
            {"呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市", "巴彦淖尔市"},
            {"沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市"},
            {"长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "松原市", "白城市"},
            {"哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市", "佳木斯市"},
            {"南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市"},
            {"杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市"},
            {"合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市"},
            {"福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市"},
            {"南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市"},
            {"济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市"},
            {"郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市"},
            {"武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市"},
            {"长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市"},
            {"广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市"},
            {"南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市", "贵港市"},
            {"海口市", "三亚市"},
            {"成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市"},
            {"贵阳市", "六盘水市", "遵义市", "安顺市", "毕节市", "铜仁市", "黔西南布依族苗族自治州", "黔东南苗族侗族自治州"},
            {"昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市"},
            {"拉萨市", "日喀则市", "昌都市", "林芝市", "山南市", "那曲市", "阿里地区"},
            {"西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市"},
            {"兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市"},
            {"西宁市", "海东市", "海北藏族自治州", "黄南藏族自治州", "海南藏族自治州", "果洛藏族自治州", "玉树藏族自治州", "海西蒙古族藏族自治州"},
            {"银川市", "石嘴山市", "吴忠市", "固原市"},
            {"乌鲁木齐市", "克拉玛依市", "吐鲁番市", "哈密市", "昌吉回族自治州", "博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州", "阿克苏地区"}
    };

    public static void main(String[] args) {
        String randomBirthAddress = getRandomAddress();
        String randomDeathAddress = getRandomAddressWithMatch(randomBirthAddress);
        System.out.println("出生地址: " + randomBirthAddress);
        System.out.println("死亡地址: " + randomDeathAddress);
    }

    public static String getRandomAddress() {
        Random random = new Random();
        prorand = random.nextInt(provinces.length);
        String province = provinces[prorand];
        if (province.charAt(2)=='市')return province;

        int cityIndex = random.nextInt(cities[prorand].length);
        String city = cities[prorand][cityIndex];

        return province + city;
    }

    public static String getRandomAddressWithMatch(String birthAddress) {
        Random random = new Random();

        if (random.nextDouble()<0.1){
            return birthAddress;
        }else if (random.nextDouble()<0.7){
            String province = provinces[prorand];
            if (province.charAt(2)=='市')return birthAddress;

            int cc = random.nextInt(cities[prorand].length);
            String city = cities[prorand][cc];
            return province+city;
        }else {
            return getRandomAddress();
        }
    }
}
